#pragma once
#include <memory>
#include <functional>
#include "MyTask.h"
#include "TLV.h"


enum Type
{
    KeyRecommand = 1,
    WebPageSearch = 2
};

class ProtocolParser
{
public:

    // 序列化字节流
    static std::string serializeMessage(const Message& msg);

    // 反序列化
    static Message parseMessage(const std::string &data);

    // 检查消息是否完整
    static bool isMessageComplete(const std::string &data);

    // 返回一个function对象，即要做什么任务，接受一个Message结构体，以及TcpConnectionPtr
    static MyTaskPtr makeTask(const Message& msg, const TcpConnectionPtr &con);

private:
    ProtocolParser() = delete;
};